সার্ভলেটস (Servlets) এবং JavaServer Pages (JSP) প্রযুক্তির মধ্যে একটি গুরুত্বপূর্ণ সম্পর্ক রয়েছে, যেখানে JSTL (JavaServer Pages Standard Tag Library) ব্যবহার করে JSP পেজে সহজ ও কার্যকরী কাস্টম ট্যাগ লাইব্রেরি যুক্ত করা যায়।
সার্ভলেটস (Servlets)
Servlets হল জাভা টেকনোলজির একটি অংশ, যা সার্ভার-সাইড প্রোগ্রামিংয়ের জন্য ব্যবহৃত হয়। এটি মূলত একটি Java ক্লাস যা HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট (উদাহরণস্বরূপ, ওয়েব ব্রাউজার) এবং সার্ভারের মধ্যে যোগাযোগ পরিচালনা করে।
Servlet API
Servlet API এর সাহায্যে আপনি নিম্নোক্ত কাজ করতে পারেন:
- Request Handling: HTTP GET/POST রিকোয়েস্ট প্রসেস করা।
- Response Generation: ক্লায়েন্টের জন্য ডাইনামিক কনটেন্ট তৈরি করা।
- Session Management: ইউজারের তথ্য সংরক্ষণ এবং পরিচালনা।
- Filters: রিকোয়েস্ট বা রেসপন্সে প্রি-প্রসেসিং ও পোস্ট-প্রসেসিং।
Servlet API এর দুটি গুরুত্বপূর্ণ ইন্টারফেস:
javax.servlet.Servletjavax.servlet.http.HttpServlet
JSTL (JavaServer Pages Standard Tag Library)
JSTL হল একটি কাস্টম ট্যাগ লাইব্রেরি যা JSP পেজে ডায়নামিক কনটেন্ট এবং লজিক ইনপুট করার কাজ সহজ করে। এটি সরাসরি JSP পেজে স্ক্রিপ্টলেট (Java কোড) লেখার পরিবর্তে ট্যাগ-ভিত্তিক অ্যাপ্রোচ ব্যবহার করে।
JSTL এর প্রধান ট্যাগ লাইব্রেরি:
- Core Tags: সাধারণ কার্যক্রম (যেমন শর্তানুযায়ী কাজ, লুপিং) সম্পন্ন করতে ব্যবহৃত হয়।
- উদাহরণ:
<c:if>,<c:forEach>,<c:choose>,<c:when>,<c:otherwise>
- উদাহরণ:
- Formatting Tags: ডেটা ফরম্যাটিং, যেমন তারিখ, সংখ্যা।
- উদাহরণ:
<fmt:formatDate>,<fmt:formatNumber>
- উদাহরণ:
- SQL Tags: ডেটাবেস অপারেশন পরিচালনা করতে ব্যবহৃত হয়।
- উদাহরণ:
<sql:query>,<sql:update>
- উদাহরণ:
- XML Tags: XML ডকুমেন্ট প্রসেস করতে ব্যবহৃত হয়।
- উদাহরণ:
<x:parse>,<x:out>
- উদাহরণ:
- Internationalization Tags: ইন্টারন্যাশনালাইজড মেসেজ ম্যানেজমেন্ট।
- উদাহরণ:
<fmt:message>
- উদাহরণ:
Servlet এবং JSTL এর সংযোগ
- Servlet Logic: সার্ভলেট সাধারণত ব্যাকএন্ড লজিক ও ডেটা প্রসেসিং পরিচালনা করে। এটি ডেটা তৈরি করে এবং
HttpServletRequestঅথবাHttpServletResponseএর মাধ্যমে JSP পেজে প্রেরণ করে। JSP with JSTL: JSP পেজে JSTL ট্যাগ ব্যবহার করে সেই ডেটা প্রদর্শন করা হয়।
উদাহরণ:
// Servlet Code protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); request.setAttribute("nameList", names); request.getRequestDispatcher("/index.jsp").forward(request, response); }<!-- JSP with JSTL --> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <ul> <c:forEach var="name" items="${nameList}"> <li>${name}</li> </c:forEach> </ul>
সারাংশ
Servlets এবং JSTL একত্রে ব্যবহার করে ওয়েব অ্যাপ্লিকেশনের উন্নত পারফরম্যান্স এবং রক্ষণাবেক্ষণযোগ্যতা নিশ্চিত করা যায়। সার্ভলেট ব্যাকএন্ড প্রসেস পরিচালনা করে এবং JSTL ব্যবহার করে JSP পেজে সহজ ও ডায়নামিক ডেটা প্রদর্শন করা হয়।
JSTL (JavaServer Pages Standard Tag Library) হলো Java EE-এর একটি স্ট্যান্ডার্ড ট্যাগ লাইব্রেরি, যা JSP পেজে প্রয়োজনীয় কার্যকারিতা সরল এবং কার্যকর উপায়ে সরবরাহ করে। এটি HTML ও Java কোডের মধ্যে মিশ্রণ এড়াতে সাহায্য করে এবং JSP পেজে জাভার লজিক লেখাকে সহজ করে।
JSTL-এর ভূমিকা
JSTL ব্যবহার করে JSP পেজে লজিক্যাল কাজগুলি (যেমন, শর্তাধীন স্টেটমেন্ট, লুপ, ডেটা ফরম্যাটিং, ডাটাবেস অপারেশন) সম্পন্ন করা যায়, যা কোড রিডেবিলিটি বাড়ায় এবং জাভা কোড JSP পেজ থেকে আলাদা করতে সাহায্য করে।
JSTL-এর সুবিধা
- কোড সহজ করা: জাভা কোড এবং HTML-এর মধ্যে মিশ্রণ কমায়।
- রিডেবিলিটি বাড়ায়: JSP পেজটি বেশি পরিষ্কার এবং বোধগম্য হয়।
- পুনঃব্যবহারযোগ্য ট্যাগ: JSTL-এর বিভিন্ন ট্যাগ সহজে পুনরায় ব্যবহার করা যায়।
- ডেভেলপমেন্ট সময় কমায়: সরল ট্যাগ ব্যবহার করে সাধারণ কাজ দ্রুত সম্পন্ন করা যায়।
JSTL ট্যাগ লাইব্রেরিগুলোর শ্রেণীবিভাগ
JSTL বিভিন্ন ট্যাগ গ্রুপে বিভক্ত, যা নির্দিষ্ট কাজের জন্য ডিজাইন করা হয়েছে। নিচে গুরুত্বপূর্ণ ট্যাগ লাইব্রেরিগুলোর বিবরণ দেওয়া হলো:
1. Core Tags
সাধারণ কাজের জন্য ব্যবহৃত হয়। এর URI:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out>: ডাটা প্রদর্শনের জন্য।<c:if>: শর্তাধীন বিবৃতি।<c:choose>, <c:when>, <c:otherwise>: মাল্টি-শর্ত পরীক্ষা।<c:forEach>: লুপ চালানোর জন্য।<c:forTokens>: টোকেনের উপর ভিত্তি করে লুপ।<c:set>: ভেরিয়েবল সেট করার জন্য।<c:remove>: ভেরিয়েবল মুছে ফেলার জন্য।
2. Formatting Tags
ডেটা ফরম্যাটিং (যেমন, সংখ্যা, তারিখ) করতে ব্যবহৃত হয়। এর URI:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatNumber>: সংখ্যা ফরম্যাট করা।<fmt:formatDate>: তারিখ ফরম্যাট করা।<fmt:message>: লোকালাইজড বার্তা প্রদর্শন।
3. SQL Tags
ডাটাবেস অপারেশনের জন্য ব্যবহৃত হয়। এর URI:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:query>: ডাটাবেস থেকে ডেটা রিটার্ন করে।<sql:update>: ডাটাবেস আপডেট করে।<sql:param>: SQL কুয়েরি-তে প্যারামিটার যোগ করে।
4. XML Tags
XML ডকুমেন্ট প্রসেস করতে ব্যবহৃত হয়। এর URI:
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<x:parse>: XML ডকুমেন্ট পার্স করে।<x:out>: XML ডেটা প্রদর্শন করে।
5. Function Tags
স্ট্রিং অপারেশন বা অন্যান্য কার্যকারিতা সম্পন্ন করতে ব্যবহৃত হয়। এর URI:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
fn:length: স্ট্রিং বা কালেকশনের দৈর্ঘ্য।fn:contains: স্ট্রিং-এ নির্দিষ্ট টেক্সট আছে কি না।fn:toUpperCase: স্ট্রিং বড় হাতের অক্ষরে রূপান্তর।
JSTL-এর ব্যবহার উদাহরণ
1. Core Tags Example
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:set var="name" value="John Doe"/>
<c:if test="${name eq 'John Doe'}">
<p>Welcome, ${name}!</p>
</c:if>
</body>
</html>
2. Formatting Tags Example
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<body>
<fmt:formatDate value="${date}" type="date" dateStyle="short"/>
</body>
</html>
3. SQL Tags Example
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:query var="result" dataSource="jdbc/myDatasource">
SELECT * FROM users;
</sql:query>
<c:forEach var="row" items="${result.rows}">
<p>${row.name}</p>
</c:forEach>
JSTL-এর ভূমিকা সংক্ষেপে
- HTML এবং জাভা কোডকে আলাদা রাখে।
- JSP পেজের কার্যকারিতা উন্নত করে।
- বিভিন্ন কাজের জন্য পূর্বনির্ধারিত ট্যাগ সরবরাহ করে।
- কোড পুনঃব্যবহার এবং রক্ষণাবেক্ষণ সহজ করে।
JSTL ব্যবহার করলে একটি JSP পেজ ক্লিন, রিডেবল এবং কার্যকর হয়, যা ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে অত্যন্ত সহায়ক।
Java সার্ভলেটস (Servlets) হলো Java EE (বর্তমানে Jakarta EE)-র একটি মূল টেকনোলজি যা ডায়নামিক ওয়েব অ্যাপ্লিকেশন তৈরিতে ব্যবহৃত হয়। এটি সার্ভার-সাইড প্রোগ্রামিং এর মাধ্যমে ক্লায়েন্টের অনুরোধ (HTTP Request) গ্রহণ করে এবং সেই অনুযায়ী HTTP রেসপন্স তৈরি করতে ব্যবহৃত হয়।
Core এবং Formatting ট্যাগ লাইব্রেরি
Java Server Pages (JSP) এর সাথে সার্ভলেটস প্রায়ই ব্যবহার করা হয়, যেখানে JSTL (JavaServer Pages Standard Tag Library) গুরুত্বপূর্ণ ভূমিকা পালন করে। JSTL-এর মধ্যে দুটি প্রধান লাইব্রেরি হলো:
- Core ট্যাগ লাইব্রেরি
- Formatting ট্যাগ লাইব্রেরি
1. Core ট্যাগ লাইব্রেরি
Core ট্যাগ লাইব্রেরি সাধারণ কার্যক্রম, যেমন শর্তমূলক লজিক, লুপিং, এবং ডেটা ম্যানিপুলেশনের জন্য ব্যবহৃত হয়।
Core লাইব্রেরি ডিরেক্টিভ
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
কিছু গুরুত্বপূর্ণ Core ট্যাগ
| ট্যাগ | কাজ |
|---|---|
<c:out> | ভেরিয়েবলের মান আউটপুট দেয় |
<c:if> | শর্ত পূরণ হলে ব্লকটি কার্যকর করে |
<c:choose> | Switch-case এর মতো শর্ত চেক করে |
<c:forEach> | লুপের মাধ্যমে ডেটা ট্রাভার্স করে |
<c:set> | ভেরিয়েবলের মান সেট করে |
<c:remove> | ভেরিয়েবল রিমুভ করে |
উদাহরণ:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="name" value="John Doe" />
<c:if test="${not empty name}">
<p>Name: <c:out value="${name}" /></p>
</c:if>
<c:forEach var="item" items="${items}">
<p>Item: <c:out value="${item}" /></p>
</c:forEach>
2. Formatting ট্যাগ লাইব্রেরি
Formatting ট্যাগ লাইব্রেরি ডেটা ফরম্যাট, যেমন তারিখ, সংখ্যা, এবং আন্তর্জাতিকীকরণের জন্য ব্যবহৃত হয়।
Formatting লাইব্রেরি ডিরেক্টিভ
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
কিছু গুরুত্বপূর্ণ Formatting ট্যাগ
| ট্যাগ | কাজ |
|---|---|
<fmt:formatNumber> | সংখ্যাকে ফরম্যাট করে |
<fmt:formatDate> | তারিখ এবং সময় ফরম্যাট করে |
<fmt:setLocale> | নির্দিষ্ট লোকেল সেট করে |
<fmt:message> | লোকেল-সাপোর্টেড বার্তা দেখায় |
<fmt:parseNumber> | String থেকে সংখ্যা তৈরি করে |
<fmt:parseDate> | String থেকে Date তৈরি করে |
উদাহরণ:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:setLocale value="en_US" />
<p>Today's Date: <fmt:formatDate value="${now}" pattern="yyyy-MM-dd" /></p>
<p>Formatted Number: <fmt:formatNumber value="1234567.89" type="currency" /></p>
<p>Localized Message: <fmt:message key="welcome.message" /></p>
Core এবং Formatting ট্যাগ ব্যবহার করার উদাহরণ
Servlet কোড:
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/example")
public class ExampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<String> items = new ArrayList<>();
items.add("Apple");
items.add("Banana");
items.add("Cherry");
request.setAttribute("items", items);
request.setAttribute("now", new Date());
request.getRequestDispatcher("/example.jsp").forward(request, response);
}
}
JSP ফাইল (example.jsp):
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL Example</title>
</head>
<body>
<h1>Core এবং Formatting ট্যাগ উদাহরণ</h1>
<h2>Items List</h2>
<ul>
<c:forEach var="item" items="${items}">
<li><c:out value="${item}" /></li>
</c:forEach>
</ul>
<h2>Formatting Example</h2>
<p>Current Date: <fmt:formatDate value="${now}" pattern="dd-MM-yyyy" /></p>
</body>
</html>
রান করার ফলাফল
- ব্রাউজারে
http://localhost:8080/exampleএ যান। আউটপুট হবে:
Core এবং Formatting ট্যাগ উদাহরণ Items List: - Apple - Banana - Cherry Formatting Example: Current Date: 21-12-2024
উপসংহার
Core এবং Formatting ট্যাগ লাইব্রেরি জটিল JSP পৃষ্ঠার কাজকে সহজ এবং আরও কার্যকর করে। এটি Java সার্ভলেট ও JSP এর মধ্যে ফ্লেক্সিবল এবং রিডেবল ইন্টারফেস প্রদান করে।
JSTL ব্যবহার করে আপনি সহজে ডাইনামিক ডেটা JSP পেজে প্রদর্শন করতে পারেন। এখানে একটি উদাহরণ দেখানো হয়েছে, যেখানে একটি Servlet ব্যাকএন্ড লজিক পরিচালনা করে এবং JSP পেজে JSTL ব্যবহার করে ডেটা প্রদর্শন করা হয়।
ধাপ ১: Maven প্রজেক্ট তৈরি এবং JSTL লাইব্রেরি যোগ করা
আপনার Maven প্রজেক্টে JSTL যোগ করতে, pom.xml এ নিচের নির্ভরতা (dependency) যুক্ত করুন:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
ধাপ ২: Servlet তৈরি করা
EmployeeServlet নামের একটি Servlet তৈরি করুন যা একটি এমপ্লয়ির তালিকা তৈরি করে এবং এটি JSP পেজে প্রেরণ করে।
package com.example;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@WebServlet("/employees")
public class EmployeeServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Employee list creation
List<String> employees = new ArrayList<>();
employees.add("Alice");
employees.add("Bob");
employees.add("Charlie");
// Setting the employee list as a request attribute
request.setAttribute("employeeList", employees);
// Forwarding to JSP
request.getRequestDispatcher("/employees.jsp").forward(request, response);
}
}
ধাপ ৩: JSP পেজ তৈরি করা
employees.jsp নামে একটি JSP পেজ তৈরি করুন যেখানে JSTL ব্যবহার করে এমপ্লয়ি তালিকা প্রদর্শন করা হবে।
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<title>Employee List</title>
</head>
<body>
<h1>Employee List</h1>
<ul>
<c:forEach var="employee" items="${employeeList}">
<li>${employee}</li>
</c:forEach>
</ul>
</body>
</html>
ধাপ ৪: web.xml (ঐচ্ছিক)
আপনি যদি @WebServlet এনোটেশন ব্যবহার না করেন, তাহলে নিচের মতো web.xml ফাইল আপডেট করতে পারেন:
<servlet>
<servlet-name>EmployeeServlet</servlet-name>
<servlet-class>com.example.EmployeeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>EmployeeServlet</servlet-name>
<url-pattern>/employees</url-pattern>
</servlet-mapping>
প্রজেক্ট রান করার পরে আউটপুট
যখন আপনি ব্রাউজারে http://localhost:8080/your-project-name/employees URL-টি চালাবেন, তখন আউটপুট হবে:
Employee List
- Alice
- Bob
- Charlie
JSTL ট্যাগের সংক্ষিপ্ত ব্যবহার
- লুপিং (Iteration):
<c:forEach>: তালিকার প্রতিটি উপাদান প্রদর্শন করতে ব্যবহার হয়।
শর্তানুযায়ী কাজ (Conditional):
<c:if test="${not empty employeeList}"> <p>Employee list is available.</p> </c:if>ডিফল্ট ভ্যালু (Default Value):
<c:choose> <c:when test="${employeeList.size() > 0}"> <p>Employees are listed above.</p> </c:when> <c:otherwise> <p>No employees found.</p> </c:otherwise> </c:choose>
সারাংশ
এই উদাহরণ দেখিয়েছে কিভাবে সার্ভলেটস এবং JSTL একত্রে ব্যবহার করে ডাইনামিক ওয়েব অ্যাপ্লিকেশন তৈরি করা যায়। সার্ভলেট ব্যাকএন্ড লজিক পরিচালনা করে এবং JSTL সহজ এবং পরিষ্কারভাবে ডেটা প্রদর্শনে সহায়তা করে।
Read more